package model

import (
	"time"
)

type Video struct {
	VideoID    int64  `json:"videoId" gorm:"column:video_id;primary_key;auto_increment" binding:"-"`
	UserID     int64  `json:"userId" gorm:"column:user_id;default:null" binding:"-"`
	VideoURL   string `json:"videoUrl" gorm:"column:video_url;default:''" binding:"-"`
	CoverURL   string `json:"coverUrl" gorm:"column:cover_url;default:''" binding:"-"`
	Title      string `json:"title" gorm:"column:title;default:null" binding:"-"`
	CategoryId int64  `json:"categoryId" gorm:"column:category_id;" binding:"-"`
	Tags       string `json:"tags" gorm:"column:tags;default:null" binding:"-"`
	BaseModel
}

func (Video) TableName() string {
	return "video"
}

type PublishVideo struct {
	Title      string `json:"title" form:"title" valid:"required~标题不能为空"`
	VideoUrl   string `json:"videoUrl" form:"videoUrl" valid:"required~视频地址不能为空"`
	CoverUrl   string `json:"coverUrl" form:"coverUrl" valid:"required~视频封面不能为空"`
	CategoryId int64  `json:"categoryId" form:"categoryId" valid:"required~分类不能为空"`
	Tags       string `json:"tags" form:"tags"`
}

type VideoMessage struct {
	UserID     int64  `json:"userId"`
	VideoURL   string `json:"videoUrl"`
	CoverURL   string `json:"coverUrl"`
	Title      string `json:"title"`
	CategoryId int64  `json:"categoryId"`
	Tags       string `json:"tags"`
}

type VideoEs struct {
	VideoID    int64     `json:"videId"`
	UserID     int64     `json:"userId"`
	VideoURL   string    `json:"videoUrl"`
	CoverURL   string    `json:"coverUrl"`
	Title      string    `json:"title"`
	CategoryId int64     `json:"categoryId"`
	Tags       []string  `json:"tags"`
	CreateTime time.Time `json:"createTime"`
	UpdateTime time.Time `json:"updateTime"`
}

type VideoVo struct {
	CoverUrl     string    `json:"coverUrl"`
	LikeCount    int64     `json:"likeCount"`
	CollectCount int64     `json:"collectCount"`
	CommentCount int64     `json:"commentCount"`
	UserId       int64     `json:"userId"`
	VideoID      int64     `json:"videoId"`
	IsLike       bool      `json:"isLike"`
	IsCollect    bool      `json:"isCollect"`
	VideoURL     string    `json:"videoUrl"`
	Title        string    `json:"title"`
	Author       Author    `json:"author"`
	Category     Category  `json:"category"`
	Tags         []string  `json:"tags"`
	CreateTime   time.Time `json:"createTime"`
	Time         string    `json:"time"`
}

type VideoUploadToken struct {
	Ticket string `json:"ticket" binding:"required"`
}

type VideoUploadTokenResponse struct {
	UploadToken string `json:"uploadToken"`
	Domain      string `json:"domain"`
}

type UserWorkQuery struct {
	Page     int   `json:"page" form:"page" valid:"required~页码不能为空"`         // 页码
	PageSize int   `json:"pageSize" form:"pageSize" valid:"required~页数不能为空"` // 每页大小
	UserId   int64 `json:"userId" form:"userId" valid:"required~userId不能为空"` //userId
}
